/*
题目: 不可能得到的最短骰子序列
给你一个长度为 n 的整数数组 rolls 和一个整数 k 。你扔一个 k 面的骰子 n 次，骰子的每个面分别是 1 到 k ，其中第 i 次扔得到的数字是 rolls[i] 。

请你返回 无法 从 rolls 中得到的 最短 骰子子序列的长度。

扔一个 k 面的骰子 len 次得到的是一个长度为 len 的 骰子子序列 。

注意 ，子序列只需要保持在原数组中的顺序，不需要连续。
https://leetcode.cn/problems/shortest-impossible-sequence-of-rolls
 */
public class ShortestSequence {
    public int shortestSequence(int[] rolls, int k) {
        Set<Integer> set = new HashSet<> ();
        int result = 0;
        int n = rolls.length;

        int j = 0;
        for (int i = 0; i < n; i = j) {
            j = i;

            while (j < n && set.size() < k) {
                set.add(rolls[j++]);
            }
            if (set.size() == k) {
                result ++;
            }
            set.clear();
        }

        return result + 1;
    }
}
